import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        //在C中二维数组可以省略行，不能省略列
        //在java中，二维数组不能省略行，只能省略列
        //java中的不规则的数组
        int[][] array=new int[2][];//这个数组有2行
        array[0]=new int[3];//第一行有3个元素
        array[1]=new int[5];//第二行有5个元素
    }



    public static void main4(String[] args) {
        //实现myToString: 1,2,3,4返回[1,2,3,4]
        int[] array=new int[]{1,2,3,4};
        String ret = myToString(array);
        System.out.println(ret);
    }

    public static String myToString(int[] array) {
        if(array==null) {
            return null;
        }
        String ret="[";
        for(int i=0;i<array.length;i++){
            ret+=array[i];
            if(i!=array.length-1) {
                ret+=",";
            }
        }
        ret+="]";
        return ret;
    }




    public static void main3(String[] args) {
        //数组是引用类型，这个引用变量存储的是一个地址
        int[] array={1,2,3};
        //如果访问会报错：空指针异常（只是叫这个名字，java中没有在指针）
        int[] array2=null;//这个null不指向任何对象的引用

        //array3这个引用指向了array这个引用所指向的对象
        int[] array3=array;

        //数组可以作为返回值（当有多个返回值时就可以使用数组返回）
        //在C中，数组[]中必须是常量，而java中可以是常量也可以是变量
        int a=10;
        int[] array4=new int[a];
    }
    public static void main2(String[] args) {
        //数组是引用类型，这个引用变量中存储的是地址
        //打印数组的几种方法：
        int[] array=new int[]{1,2,3,4,5,6,7,8,9,10};
        //方法1：
        for(int i=0;i<array.length;i++) {
            System.out.print(array[i]+" ");
        }
        System.out.println();

        //方法2：foreach,左边是类型+变量名，右边是数组名(for的增强版)
        //每循环一次会把array中的元素放到tmp变量中，然后就可以打印
        for (int tmp : array) {
            System.out.print(tmp+" ");
        }
        System.out.println();

        //方法3：java中提供的原生工具,使用是要包含import java.util.Arrays;
        //这是java实现的一个打印数组的方法，将数组中的值，以字符串的形式组织起来然后打印
        System.out.println(Arrays.toString(array));

        //方法2和方法3找不到下标，如果需要用到下标，则用for循环
    }
    public static void main1(String[] args) {
        //定义数组的方法(数组在定义时[]内不能有数字)
        int[] array={1,2,3};
        int array1[]={1,2,3};//c种方法，java中不推荐
        int[] array2 = new int[]{1,2,3};

        int[] array3=new int[5];
        array3[2]=20;//可指定位置赋值

        //这是错误的写法，当整体初始化时，只能在定义的时候初始化
//        int[] array4;
//        array4={1,2,3};

        //以下两种方式可以解决以上问题
        int[] array4;
        array4=new int[]{1,2,3};

        int[] array5=new int[10];

        //float默认0.0f,double默认0.0,char默认/u0000:十六进制的0
        boolean[] flag=new boolean[10];//默认全flase
        String[] strings=new String[10];//默认全是null


    }

}
